package day8;

import java.util.Arrays;
import java.util.EnumSet;

//错误原因： 本题为找的是最长子序列，不用连续；
public class 最长连续子序列 {
	public int MLS1 (int[] arr) {
        // write code here
        int n=arr.length;
		 Arrays.sort(arr);
		 if(n==1) return 1;
		 int ret=0;
		 //双指针
		 for(int i=0;i<n;){
			 //count统计区间[i,j]中非重复的数字个数
            int j=i+1,count=1;
            while(j<n){
            	//只有差为1count才更新
                if(arr[j]-arr[j-1]==1){
                    count++;
                    j++;
                }
                else if(arr[j]==arr[j-1]){
                    j++;
                }
                else{
                    break;
                }
            }
            ret=Math.max(ret,count);
            i=j;
         }
		 return ret;
    }
	 
	 
	public int MLS2 (int[] arr) {
        // write code here
        int n = arr.length;
        Arrays.sort(arr);
        int ret = 1;
        int l = 0, r = 1;
        //滑动窗口解决的是连续子数组问题，而子序列是不连续的；
        while (r < n) {
            if (arr[r] - 1 == arr[r - 1]) {
                if (r == n - 1) {
                    ret = Math.max(ret, r - l + 1);
                }
            } else {
                ret = Math.max(ret, r - l);
                l = r;
            }
            r++;
        }
        return ret;
    }
}
